package com.example.plantuml.model;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

/**
 * 方法调用信息模型
 */
@Data
public class MethodCall {
    private String id;                // 唯一标识
    private String className;         // 类名
    private String methodName;        // 方法名
    private String parameterDesc;     // 参数描述
    private long startTime;           // 开始时间(毫秒)
    private long endTime;             // 结束时间(毫秒)
    private long duration;            // 耗时(毫秒)
    private String parentId;          // 父方法ID
    private List<MethodCall> children = new ArrayList<>();  // 子方法调用

    public MethodCall() {
        this.id = UUID.randomUUID().toString().substring(0, 8);
    }

    public void calculateDuration() {
        this.duration = endTime - startTime;
    }

    public String getFullMethodName() {
        return className + "." + methodName + parameterDesc;
    }
}
